package request

// CreateCargoRequest 创建货物请求
type CreateCargoRequest struct {
	Code         string  `json:"code" binding:"required"`        // 货物编码
	Name         string  `json:"name" binding:"required"`        // 货物名称
	CategoryID   uint    `json:"category_id" binding:"required"` // 分类ID
	SupplierID   *uint   `json:"supplier_id"`                    // 供应商ID
	Unit         string  `json:"unit"`                           // 单位
	Spec         string  `json:"spec"`                           // 规格
	Price        float64 `json:"price"`                          // 价格
	Description  string  `json:"description"`                    // 描述
	MinStock     float64 `json:"min_stock"`                      // 最小库存
	MaxStock     float64 `json:"max_stock"`                      // 最大库存
	Status       int     `json:"status"`                         // 状态：1-启用 2-禁用
	StorageType  int     `json:"storage_type"`                   // 存储类型：1-普通 2-冷藏 3-冷冻
	ShelfLife    int     `json:"shelf_life"`                     // 保质期(天)
	Manufacturer string  `json:"manufacturer"`                   // 生产厂家
	Remark       string  `json:"remark"`                         // 备注
}

// UpdateCargoRequest 更新货物请求
type UpdateCargoRequest struct {
	ID           uint    `json:"id" binding:"required"` // 货物ID
	Code         string  `json:"code"`                  // 货物编码
	Name         string  `json:"name"`                  // 货物名称
	CategoryID   uint    `json:"category_id"`           // 分类ID
	SupplierID   *uint   `json:"supplier_id"`           // 供应商ID
	Unit         string  `json:"unit"`                  // 单位
	Spec         string  `json:"spec"`                  // 规格
	Price        float64 `json:"price"`                 // 价格
	Description  string  `json:"description"`           // 描述
	MinStock     float64 `json:"min_stock"`             // 最小库存
	MaxStock     float64 `json:"max_stock"`             // 最大库存
	Status       int     `json:"status"`                // 状态：1-启用 2-禁用
	StorageType  int     `json:"storage_type"`          // 存储类型：1-普通 2-冷藏 3-冷冻
	ShelfLife    int     `json:"shelf_life"`            // 保质期(天)
	Manufacturer string  `json:"manufacturer"`          // 生产厂家
	Remark       string  `json:"remark"`                // 备注
}

// ListCargoRequest 货物列表请求
type ListCargoRequest struct {
	PageRequest
	Keyword    string `form:"keyword"`     // 关键字(货物编码、名称)
	CategoryID uint   `form:"category_id"` // 分类ID
	Status     int    `form:"status"`      // 状态：1-启用 2-禁用
}

// CreateCargoCategoryRequest 创建货物分类请求
type CreateCargoCategoryRequest struct {
	Name     string `json:"name" binding:"required"`  // 分类名称
	Code     string `json:"code" binding:"required"`  // 分类编码
	ParentID *uint  `json:"parent_id"`                // 父分类ID
	Level    int    `json:"level" binding:"required"` // 层级：1-一级分类，2-二级分类
	Sort     int    `json:"sort"`                     // 排序
	Status   int    `json:"status"`                   // 状态：1-启用，0-禁用
	Remark   string `json:"remark"`                   // 备注
}

// UpdateCargoCategoryRequest 更新货物分类请求
type UpdateCargoCategoryRequest struct {
	ID       uint   `json:"id" binding:"required"`   // 分类ID
	Name     string `json:"name" binding:"required"` // 分类名称
	Code     string `json:"code" binding:"required"` // 分类编码
	ParentID *uint  `json:"parent_id"`               // 父分类ID
	Level    int    `json:"level"`                   // 层级：1-一级分类，2-二级分类
	Sort     int    `json:"sort"`                    // 排序
	Status   int    `json:"status"`                  // 状态：1-启用，0-禁用
	Remark   string `json:"remark"`                  // 备注
}

// ListCargoCategoryRequest 货物分类列表请求
type ListCargoCategoryRequest struct {
	Keyword  string `form:"keyword"`   // 关键字(分类名称)
	ParentID *uint  `form:"parent_id"` // 父分类ID
	Level    int    `form:"level"`     // 层级：1-一级分类，2-二级分类
	Status   int    `form:"status"`    // 状态：1-启用，0-禁用
}

// UpdateCargoStatusRequest 更新货物状态请求
type UpdateCargoStatusRequest struct {
	ID     uint `json:"id,omitempty"`              // 货物ID (从URL路径参数获取)
	Status int  `json:"status" binding:"required"` // 状态：1-启用 2-禁用
}

// BatchUpdateCargoStatusRequest 批量更新货物状态请求
type BatchUpdateCargoStatusRequest struct {
	IDs    []uint `json:"ids" binding:"required"`    // 货物ID列表
	Status int    `json:"status" binding:"required"` // 状态：1-启用 2-禁用
}

// CargoListRequest 货物列表请求
type CargoListRequest struct {
	PageRequest
	Keyword    string `form:"keyword"`     // 关键字(货物编码、名称)
	CategoryID uint   `form:"category_id"` // 分类ID
	Status     int    `form:"status"`      // 状态：1-启用 2-禁用
}
